AWS DMSがAzure SQL Databaseからのデータ移行をサポートしました
ウィスキー、シガー、パイプをこよなく愛する大栗です。
本日DMSでアップデートがありAzure SQL Databaseをソースとしたデータ移行をサポートしたため試してみました。
AWS Database Migration Service Adds Amazon S3 and Azure SQL Database as Sources
概要
一言で言うと、AWS DMSでのデータ移行元としてAzure SQL Databaseをサポートしたということです。ただし、制限もあります。
- Azure SQL Databaseでは変更データキャプチャ (CDC) をサポートしていません。
ドキュメントを見る限りは、その他について通常のSQL Serverと変わらないようです。
試してみる
下図のようにAzure上のSQL DatabaseにDMSがアクセスして、Amazon Auroraへデータを移行するというシナリオを考えます。本来AzureとAWSの間の通信はスループットやセキュリティを考える必要がありますが、簡素化するためにインターネット経由でDMSからSQL Databaseへアクセスします。SQL Databaseへのアクセスは全て暗号化されるようですので大丈夫でしょう。また、Auroraのテーブル構造はDMSが自動で作成する設定を使用しましたが、通常はSchema Conversion Toolを使用してテーブル構造を変換したテーブルに対して移行しましょう。
DMSのレプリケーションインスタンスの構築
DMSのレプリケーションインスタンスを構築します。詳細な手順は、以下の記事を参考にしてください。
レプロケーションサブネットグループ作成
今回はDMSが直接インターネットに出ていくことを想定しているため、パブリックなサブネットをサブネットグループとします。
レプリケーションインスタンスの作成
レプリケーションインスタンスを作成します。パラメータ
- レプリケーションエンジンのバージョン:2.3.0
- マルチAZ:いいえ(本番移行では「はい」にしてください)
- パブリックアクセス可能:チェック
移行先のAuroraの構築
データの移行先であるAuroraを構築します。この記事やこの記事を参照して構築してください。ポイントはDMSのレプリケーションインスタンスからアクセスできる場所に配置することです。
SQL Databaseの構築
AzureでSQL Databaseを構築します。Azureは慣れていないため作法がわからなかったので適当に構築してしまっています。
今回は東日本リージョンに作成しました。また、データ移行を試すためにソースの選択
でサンプルデータを使用しています。
SQL Databaseの作成が完了したらファイアウォールの設定をします。
DMSのIPアドレスを許可します。
DMSのエンドポイントの作成
AWS DMSのエンドポイントを作成します。
移行元のSQL Databaseのエンドポイントです。SQL Databaseを作成した時の設定内容を記載します。'ソースエンジン'にazuredb
が追加されていますので、これを選択します。SSLモードは選択肢がないためnone
を設定します。
作成したてプリケーションインスタンスを選択してテストの実行
をクリックします。接続のテストに成功したらSave
をクリックしてSQL Databaseのエンドポイントを作成します。
次は移行先のAuroraのエンドポイントです。SQL Databaseと同様にAuroraを作成した時の設定内容を記載します。'ソースエンジン'はaurora
を選択します。
テストの実行
をして、接続のテストに成功したらSave
をクリックしてAuroraのエンドポイントを作成します。
タスクの作成と移行
これからは実際にデータを移行するためにタスクを作成していきます。
SQL Databaseでは変更データキャプチャ (CDC) をサポートしていないため、移行タイプで既存のデータを移行する
を選択します。他は今まで作成したものを選択してください。
テーブルマッピングでは、スキーマ名をSalesLT
、テーブル名の例は%
(全て)mアクションは含める
として、SalesLTスキーマ全てを移行対象としました。選択ルールの追加
をクリックしてテーブルマッピングを確定します。
作成すると、タスクが開始されます。
しばらくすると全テーブルで移行が完了します。
さいごに
2017年時点でクラウド間のデータ移行は一般的ではありません。しかしDMSによるSQL Databaseサポートは覚えておくと良いでしょう。今後必要になった時に選択肢が広がるかと思います。